package _2025_4_16;

import java.io.*;
import java.util.Scanner;

public class Findcontent {
    public static void main(String[] args) throws IOException {
        System.out.println("请输入要扫描的路径");
        Scanner scanner=new Scanner(System.in);
        String rootpath=scanner.next();
        //传入文件
        File file=new File(rootpath);
        String key= scanner.next();
        if(!file.exists()){
            System.out.println("路径不存在");
            return;
        }
        if(!file.isDirectory()){
            System.out.println("输入的路径不是目录");
            return;
        }
        if(rootpath.isEmpty()||rootpath.length()==0){
            System.out.println("输入的字符串不能为空");
            return;
        }
        if(key==null||key.isEmpty()){
            System.out.println("输入的关键字不能为空");
            return;
        }
        scan(file,key);
    }
    private static void scan(File file,String key) throws IOException {
        //获取扫描目录下的所有子目录和普通文件
        File[]files=file.listFiles();
        if(files.length==0)return;
        //遍历数组中的所有文件
        for(File file1:files){
            //如果是文件进入判断
            if(file1.isFile()){
                //判断文件是否包含关键字
                //读取文件内容，内容中是否包含关键字
                boolean bool=checkFile(file,key);
                if (!bool) {
                    // 没有到目标文件
                    continue;
                }
                // 接收用户的删除指令
                    System.out.println("找到文件："+file1.getCanonicalPath()+"是否删除?(Y/N)");
                    Scanner scanner=new Scanner(System.in);
                    String ret=scanner.next();
                    if(ret.equals("Y")){
                        file1.delete();
                        System.out.println("删除文件："+file1.getCanonicalPath());
                    }
            }
            else{
                scan(file1,key);
            }
        }
    }
    private static boolean checkFile(File file,String key){
        //判断文件名是否包含关键字
        //获取文件名
        String filename=file.getName();
        if(filename.contains(key))return true;
        //读取文件内容，判断内容中是否包含关键字
        try(InputStream inputStream=new FileInputStream(file)){
            //创建一个用于保存文件内容的对象
            StringBuilder stringBuilder=new StringBuilder();
            Scanner scanner=new Scanner(inputStream);
            //循环读取内容
            while (true){
                //判断文件是否到结尾
                if(!scanner.hasNextLine())break;
                stringBuilder.append(scanner.nextLine());
            }
            //校验内容中是否包含关键字
            if(stringBuilder.indexOf(key)>-1)return true;
        }  catch (IOException e) {
            throw new RuntimeException(e);
        }
        return  false;
    }


}
